home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d2 / tlb_v117.arc / LASTBYTE.DOC < prev    next >
Text File  |  1990-12-21  |  74KB  |  1,622 lines

  1.  
  2.  
  3.         
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.                                THE LAST BYTE (tm)
  12.  
  13.  
  14.                            A DOS Upper Memory Manager
  15.  
  16.  
  17.  
  18.  
  19.                                   Version 1.17
  20.  
  21.  
  22.  
  23.  
  24.  
  25.  
  26.  
  27.                                Copyright (C) 1990
  28.                                All Rights Reserved
  29.  
  30.  
  31.  
  32.  
  33.                                        by
  34.  
  35.  
  36.                               KEY SOFTWARE PRODUCTS
  37.                                 440 Ninth Avenue
  38.                           Menlo Park, California 94025
  39.                                  (415) 364-9847
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.  
  51.  
  52.  
  53.                          Prodigy E-Mail Address: VGDC59A
  54.                E-Mail on Internet, Bitnet, etc: DLEWIS@SCU.BITNET
  55.              CompuServe E-Mail Address: >Internet:DLEWIS@SCU.BITNET
  56.  
  57.  
  58.  
  59.  
  60.         
  61.  
  62.  
  63.         Dec 11, 1990           The LAST BYTE (tm)                       1
  64.  
  65.  
  66.         _1_.__I_n_t_r_o_d_u_c_t_i_o_n________ 
  67.  
  68.         LASTBYTE  is  a  collection  of software that can make up to 384k
  69.         more  memory  available  to  your  computer  if it has one of the
  70.         following  memory  controller chips, an Expanded Memory board, or
  71.         if  it is a 386sx, 386, or 486 and you have installed the Windows
  72.         3.0 version of EMM386.SYS: 
  73.  
  74.         Chips and Technologies: 
  75.  
  76.                 82C212 - From the CS8221 NEAT (tm) chipset 
  77.                 82C222 - From the CHIPS/250 PS/2 50/60 chipset 
  78.                 82C235 - The SCAT (tm) Single Chip AT VLSI chip 
  79.                 82C241 - From the CS8223 LeAPset (tm) chipset 
  80.                 82C302 - From the CS8230 386/AT CHIPSet (tm) 
  81.                 82C307 - From the CS8231 386/AT CHIPSet (tm) 
  82.                 82C311 - From the CS8233 PEAK 386/AT CHIPSet (tm) 
  83.                 82C322 - From the CHIPS/280 PS/2 70/80 chipset 
  84.                 82C812 - From the CS8281 NEATsx (tm) chipset 
  85.                 82C841 - From the CS8283 LeAPset-sx (tm) chipset 
  86.  
  87.         VLSI Technology: 
  88.  
  89.                 82C202 - From VLSI Technologies' PC/AT chipset  
  90.  
  91.         Texas Instruments: 
  92.  
  93.                 82411 - The Single-Chip AT Controller 
  94.  
  95.                 This  chip  is  "functionally"  equivalent to the
  96.                 Chips  and  Technologies NEAT chipset, but unlike
  97.                 the  latter,  most of its configuration registers
  98.                 are  write-only, causing automatic detection of a
  99.                 NEAT  compatible  chipset  to fail.  You must use
  100.                 the  "82411"  override option on the LASTBYTE.SYS
  101.                 command line with this device.  
  102.  
  103.  
  104.         LASTBYTE  does  this  by using left-over shadow ram or by mapping
  105.         EMS pages to fill the unused regions between 640k and 1M.  
  106.  
  107.         With  LASTBYTE,  this  memory  can  also  be  used for TSR's, TSR
  108.         markers   (to   facilitate  TSR  removal),  device  drivers,  DOS
  109.         Buffers,  RAM  disks,  and  Emulated  Expanded Memory rather than
  110.         loading  all  of  these  into  conventional memory (0-640k) where
  111.         they  use  precious  DOS  memory space needed by your application
  112.         programs.   If  you don't have an EGA or VGA, or if you don't use
  113.         graphics,  then  conventional  memory  (available  to application
  114.         programs) can be extended from 640k to as much as 736k.  
  115.  
  116.         Other  system  requirements:  DOS  3.0  or  higher, 1M or more of
  117.  
  118.  
  119.  
  120.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  121.  
  122.  
  123.         Dec 11, 1990           The LAST BYTE (tm)                       2
  124.  
  125.  
  126.         (physical) memory.  
  127.  
  128.                               Important Differences
  129.  
  130.         LASTBYTE  has  five  significant advantages over other DOS Memory
  131.         Managers: 
  132.  
  133.              o  LASTBYTE  does  not  require  a  386.   Many  memory
  134.                 managers  won't  work  on non-386 systems.  The only
  135.                 hardware  required  by  LASTBYTE is one of the above
  136.                 memory  controller  chips  and  1MB  of  memory,  an
  137.                 Expanded  Memory  board,  or  a  386sx,  386, or 486
  138.                 processor   with   the   Windows   3.0   version  of
  139.                 EMM386.SYS installed.  
  140.  
  141.              o  LASTBYTE   does  not  use  any  386  protected  mode
  142.                 software.   This means that unlike some other memory
  143.                 managers,  LASTBYTE  works  well with protected mode
  144.                 software such as Windows 3.0.  
  145.  
  146.              o  LASTBYTE   doesn't   require  any  Extended  Memory.
  147.                 Other  memory managers depend on the 386 processor's
  148.                 ability  to  remap  physical  memory  from above 1MB
  149.                 into  high  memory,  but of course that memory is no
  150.                 longer  available as Extended Memory.  LASTBYTE uses
  151.                 the  memory  you  already  have sitting between 640k
  152.                 and  1Meg.   (Obviously, this statement applies only
  153.                 if  your  computer  does  not  require EMM386.SYS to
  154.                 install LASTBYTE.) 
  155.  
  156.              o  On  motherboards  that  use  one of the above memory
  157.                 controller  chips,  LASTBYTE,  unlike  all other DOS
  158.                 memory  managers,  can use the high memory addresses
  159.                 that  coincide  with the Display Buffer, Bios ROM or
  160.                 any  adapter that you have installed.  LASTBYTE uses
  161.                 a  "Bank-Switching"  technique to use this memory as
  162.                 a  Ram  Disk,  as  Expanded  Memory, and to hold TSR
  163.                 "markers"  to  facilitate  TSR  removal.  This gives
  164.                 LASTBYTE  the  unique  ability  to use *ALL* 384k of
  165.                 high memory! 
  166.  
  167.              o  LASTBYTE  does not slow down the performance of your
  168.                 computer,   both  because  it  does  not  incur  the
  169.                 instruction  execution  inherent  in  386  protected
  170.                 mode,  and  because  it  uses  regular  (full-speed)
  171.                 memory.    (Some  memory  managers  use  the  actual
  172.                 EGA/VGA  graphics  buffer  as  DOS  memory,  but the
  173.                 display  buffer memory of some EGA/VGA adapter cards
  174.                 can  be  as  much  as  six times slower than regular
  175.                 memory.)  
  176.  
  177.  
  178.  
  179.  
  180.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  181.  
  182.  
  183.         Dec 11, 1990           The LAST BYTE (tm)                       3
  184.  
  185.  
  186.  
  187.         _2_.__I_n_s_t_a_l_l_a_t_i_o_n________ 
  188.  
  189.         You  should first install LASTBYTE on a floppy to verify that you
  190.         can boot and operate your PC reliably with LASTBYTE installed: 
  191.  
  192.              Step 1:  Use  the  FORMAT command with the /S option to
  193.                       prepare a bootable floppy disk.  
  194.  
  195.              Step 2:  Copy  all  (it's easier) of the LASTBYTE files
  196.                       onto  the  diskette.   (Actually, all you need
  197.                       are  LASTBYTE.SYS,  HIGHDRVR.SYS, HIGHTSR.EXE,
  198.                       HIGHMEM.EXE,    HIGHMARK.EXE,    HIGHUNDO.EXE,
  199.                       CLOCK.EXE, COLS.40, and COLS.80.) 
  200.  
  201.              Step 3:  Copy  the DOS device driver file ANSI.SYS onto
  202.                       the diskette.  
  203.  
  204.              Step 4:  Create  a  CONFIG.SYS  file on the floppy that
  205.                       contains the lines: 
  206.  
  207.                               DEVICE=LASTBYTE.SYS ? 
  208.                               DEVICE=HIGHDRVR.SYS ANSI.SYS 
  209.  
  210.                            Note:   If   your   installation  of
  211.                            LASTBYTE   is   dependent   on   the
  212.                            presence  of  Expanded  Memory, then
  213.                            you  must precede these lines with a
  214.                            similar   line   to   install   your
  215.                            Expanded    Memory   device   driver
  216.                            before installing LASTBYTE.SYS.  
  217.  
  218.                       The  "?" in the first line is intentional - it
  219.                       directs  LASTBYTE  to display what it finds in
  220.                       the high memory address space.  
  221.  
  222.              Step 5:  Create an AUTOEXEC.BAT file on the floppy that
  223.                       contains the lines: 
  224.  
  225.                               HIGHMARK 
  226.                               HIGHTSR CLOCK 
  227.  
  228.              Step 6:  Boot  from  the  floppy.   (Note:  Some memory
  229.                       controller  chips  on motherboards with only 1
  230.                       Meg  of physical memory provide a setup option
  231.                       to   use   the  384k  as  Extended  Memory  by
  232.                       relocating  it above the 1 Meg boundary.  This
  233.                       option  is incompatible with LASTBYTE and must
  234.                       be  disabled  in  the CMOS Setup Configuration
  235.                       Menu.) 
  236.  
  237.  
  238.  
  239.  
  240.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  241.  
  242.  
  243.         Dec 11, 1990           The LAST BYTE (tm)                       4
  244.  
  245.  
  246.  
  247.         If  everything  goes  ok,  you'll  see  a  sign-on box that looks
  248.         something like the following: 
  249.  
  250.         ╔═══════════════════════════════════════════════════════════════════╗
  251.         ║        The Last Byte v1.17h - Licensed for EVALUATION ONLY        ║
  252.         ║   Copyright (C) 1990, Key Software Products, All Rights Reserved  ║
  253.         ╟───────────────────────────────────────────────────────────────────╢
  254.         ║          25 Mhz 80386 with Chips & Technologies 82C302c           ║
  255.         ╟───────────────────────────────────────────────────────────────────╢
  256.         ║  Address Range  Size    Width    Bandwidth    Description         ║
  257.         ║   A0000-9FFFF  640 KB  32 bits  38.0 MB/Sec   Conventional Memory ║
  258.         ║   A0000-FFFFF  384 KB  32 bits  38.0 MB/Sec   Shadow Ram Memory   ║
  259.         ║   A0000-BFFFF  128 KB  16 bits   3.1 MB/Sec   VGA Display Buffer  ║
  260.         ║   C0000-C7FFF   32 KB  16 bits   3.1 MB/Sec   Adapter Rom Memory  ║
  261.         ║   C8000-CB7FF   14 KB   8 bits   1.3 MB/Sec   Adapter Rom Memory  ║
  262.         ║   CB800-CBFFF    2 KB   8 bits   1.3 MB/Sec   Adapter Ram Memory  ║
  263.         ║   F0000-FFFFF   64 KB  16 bits   3.1 MB/Sec   Bios (Boot) Rom     ║
  264.         ╟───────────────────────────────────────────────────────────────────╢
  265.         ║ Conventional  High-DOS     Bank-Switch   Shadowed Roms  Excluded  ║
  266.         ║     640k        32k            32k            96k         224k    ║
  267.         ╚═══════════════════════════════════════════════════════════════════╝
  268.  
  269.         If  your  PC  stops before displaying the entire box shown above,
  270.         or  if  it  fails  to  operate  properly  after  booting, this is
  271.         because  LASTBYTE  failed  to  identify  one  of  your  installed
  272.         adapters  that  uses  some  portion  of  the  high-memory address
  273.         space.   If  this  happens,  you'll  probably  need  to  use  the
  274.         "EXCLUDE="  command  line  option  (discussed  below) to manually
  275.         disable  the  corresponding  region(s) where conflict occurs.  To
  276.         temporarily  get  around this problem, you can manually abort all
  277.         LASTBYTE  device drivers and TSR's by simultaneously holding down
  278.         the  <left  shift>,  <alt>,  and  <ctrl>  keys  during  the  boot
  279.         sequence.  
  280.  
  281.         The  following  article  provides  an excellent definition of the
  282.         various   kinds   of  memory,  such  as  Conventional,  Extended,
  283.         Expanded,  High,  and  Upper.   More  important,  however, is its
  284.         discussion  of  how various adapter cards make use of the address
  285.         space  between  640k  and  1 Meg, and may provide some insight if
  286.         you're having problems getting LASTBYTE to install properly: 
  287.  
  288.              Barry  Simon,  "How  to Get the Most from Your System's
  289.              High  DOS Memory", PC Magazine, Vol. 9, No. 10 (May 29,
  290.              1990), pp. 347-358.  
  291.  
  292.         After  AUTOEXEC.BAT  is  finished,  you'll  see  the current time
  293.         displayed  in inverse video in the upper left-hand corner of your
  294.         screen.   This  verifies  that HIGHTSR has succesfully loaded the
  295.         CLOCK.EXE  into  high  memory.   You  can verify that ANSI.SYS is
  296.         installed and operating by using the commands: 
  297.  
  298.  
  299.  
  300.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  301.  
  302.  
  303.         Dec 11, 1990           The LAST BYTE (tm)                       5
  304.  
  305.  
  306.  
  307.                 TYPE COLS.40 
  308.  
  309.                         {switches display to 25 rows by 40 columns}, or 
  310.  
  311.                 TYPE COLS.80 
  312.  
  313.                         {switches display to 25 rows by 80 columns}.  
  314.  
  315.         (These  commands  will  display garbage on the screen if ANSI.SYS
  316.         has not been installed.) 
  317.  
  318.         Now  run  HIGHMEM to get a map of high memory.  Depending on what
  319.         adapter  cards  you  have installed, HIGHMEM's output should look
  320.         something like that shown below.  
  321.  
  322.  
  323.                          Paging the output of HIGHMEM   
  324.  
  325.              You  may  use  the  "/Page"  (or simply "/P") option of
  326.              HIGHMEM  to force the output to pause after each screen
  327.              full.  
  328.  
  329.  
  330.         This  listing  is  for a PC that has an EGA display adapter and a
  331.         SCSI  hard  disk adapter.  The "Shadow Ram" at C0000-C3FFF is the
  332.         EGA  Bios and the "Adapter Rom" and "Adapter Ram" are on the SCSI
  333.         adapter  card.   The  "DOS Unusable" region exists because of the
  334.         16k  resolution of the memory controller chip.  On a more typical
  335.         machine  (without  a  SCSI hard disk), the entire 16k region from
  336.         C8000-CBFFF would be available for device drivers and TSR's.  
  337.  
  338.         The  column  labelled "Bnk-Swtch" shows which entries can be used
  339.         as  Bank-Switch  memory  for Ramdisk, emulated EMS memory, or TSR
  340.         markers.  
  341.  
  342.         Numbers  enclosed in brackets (e.g., "[ 14,064]") refer to memory
  343.         that  is  available for use.  Once you have licensed your copy of
  344.         LASTBYTE,  the "Excluded Block" shown above would be added to the
  345.         free  High-DOS  memory  pool,  and the second entry labelled "EGA
  346.         Display  Ram"  would  be  added  to  the  free Bank-Switch memory
  347.         pool.   That  means  a  total  of  approximately  160k  of memory
  348.         available  for  device drivers and TSR's and another 128k for Ram
  349.         Disks,  TSR  markers,  or emulated EMS memory.  (Sections 11, 12,
  350.         and  14  explain  how  you  may even be able to increase the 160k
  351.         figure to 224k or even 288k.) 
  352.  
  353.         The  column  labelled "Mark" is used in conjunction with HIGHMARK
  354.         and  HIGHUNDO.   In  particular,  you  may  have wondered why the
  355.         command  HIGHMARK  was  included in the AUTOEXEC.BAT file.  Since
  356.         it  was  executed  before running HIGHTSR CLOCK, you are now able
  357.  
  358.  
  359.  
  360.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  361.  
  362.  
  363.         Dec 11, 1990           The LAST BYTE (tm)                       6
  364.  
  365.  
  366.         to remove the clock from memory by simply running HIGHUNDO.  
  367.  
  368.         HIGHMEM v1.17g (C) Key Software Products 1990.  All Rights Reserved.
  369.  
  370.         MCB    Address Range   Description     High-DOS Bnk-Swtch  Total  Mark
  371.         ────   ───────────── ────────────────  ──────── ───────── ─────── ────
  372.         C400 ┌ A0000-C3FFF  <Wrap Block>                                
  373.         C402 ├─ A0000-A7FFF  16-bit VGA Ram             [ 32,768]  32,768
  374.         C404 ├─ A8000-BFFFF  16-bit VGA Ram                        98,304
  375.         C406 └─ C0000-C3FFF  32-bit Shadow Ram            16,384   16,384
  376.         C408    C4090-C4AAF  LASTBYTE.SYS         2,592             2,592
  377.         C4AB    C4AC0-C4AFF  CLOCK.EXE [Env]         64                64
  378.         C4B0    C4B10-C4CBF  CLOCK.EXE              432               432
  379.         C4CC    C4CD0-C7FDF  ....DOS Free      [ 13,072]           13,072
  380.         C7FE ┌ C8000-CBFFF  <Wrap Block>                                
  381.         CC00 ├─ C8000-C97FF  8-bit Adapter Rom                      6,144
  382.         CC02 ├─ C9800-C9FFF  8-bit Adapter Ram                      2,048
  383.         CC04 └─ CA000-CBFFF  DOS Unusable                           8,192
  384.         CC06    CC070-CD1EF  ANSI.SYS             4,480             4,480
  385.         CD1F    CD200-CFF9F  ....DOS Free      [ 11,680]           11,680
  386.         CFFE ┌ D0000-FFFFF  <Wrap Block>                                
  387.         CFFA ├─ D0000-EFFFF  Excluded Block                       131,072
  388.         CFFC └─ F0000-FFFFF  32-bit Shadow Ram            65,536   65,536
  389.                                                 ───────  ───────  ───────
  390.                             High Memory In Use:   6,816   81,920  334,496
  391.                             [Free High Memory]:  25,504   32,768   58,272
  392.                                   MCB Overhead:     192      256      448
  393.                                                 ───────  ───────  ───────
  394.                              Total High Memory:  32,512  114,944  393,216
  395.  
  396.  
  397.         _3_.__C_o_m_m_a_n_d__L_i_n_e__O_p_t_i_o_n_s__F_o_r__L_A_S_T_B_Y_T_E_._S_Y_S____ 
  398.  
  399.         During  initialization,  LASTBYTE.SYS  scans  high memory looking
  400.         for  Bios  ROMs,  Display  Ram, and Adapter Cards that occupy the
  401.         640k-1M  address  space.   The  unoccupied portion of high memory
  402.         defaults  to  High-DOS  memory  (for  device  drivers and TSR's),
  403.         while  the  occupied  portion defaults to Bank-Switch memory that
  404.         can be made accessible for Ram disks, emulated EMS memory, etc.  
  405.  
  406.         These  defaults  can  be  modified  by  the  use  of command line
  407.         options.   There  are  four command line options for LASTBYTE.SYS
  408.         (you  may  abbreviate  any  of  these  by  using  only  the first
  409.         letter): 
  410.  
  411.              DOS (Abbreviated "D") 
  412.  
  413.                   Forces   a   region  of  high  memory  that  would
  414.                   normally  be used as Bank-Switch memory to be made
  415.                   available  as  High-DOS  memory.   (This option is
  416.                   not  available  when  LASTBYTE depends on Expanded
  417.  
  418.  
  419.  
  420.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  421.  
  422.  
  423.         Dec 11, 1990           The LAST BYTE (tm)                       7
  424.  
  425.  
  426.                   Memory.) 
  427.  
  428.              BANKSWITCH (Abbreviated "B") 
  429.  
  430.                   Forces   a   region  of  high  memory  that  would
  431.                   normally  be  used  as  High-DOS memory to be made
  432.                   available  as Bank-Switch memory.  (This option is
  433.                   not  available  when  LASTBYTE depends on Expanded
  434.                   Memory.) 
  435.  
  436.              EXCLUDE (Abbreviated "E") 
  437.  
  438.                   Forces   a   region  of  high  memory  to  not  be
  439.                   available  either  as  High-DOS  or as Bank-Switch
  440.                   memory.  
  441.  
  442.              APPEND (Abbreviated "A") 
  443.  
  444.                   Reserves  a region of high memory for appending to
  445.                   the  end  of  DOS  low (conventional) memory, thus
  446.                   increasing  it  beyond  640k.   The  memory is NOT
  447.                   added   until   it   is   enabled  with  HIGHAPND.
  448.                   Requires  setting  "<base>"  (see  below) to A000,
  449.                   and   "<size>"  to  a  multiple  of  16k.   (Note:
  450.                   "<size>"  is  limited  to  16k  in  the unlicensed
  451.                   version  so  that  some High DOS memory will still
  452.                   be available.) 
  453.  
  454.              SHADOW (Abbreviated "S") 
  455.  
  456.                   Forces  a  region of memory (presumably ROM) to be
  457.                   copied   into   Shadow  Ram.   If  other  hardware
  458.                   outside  the specified region, but within the same
  459.                   16k   block   conflicts   with   this  request,  a
  460.                   corresponding  error message will be displayed and
  461.                   LASTBYTE  will  not  be  installed.   (Note:  This
  462.                   option  is  normally  not required.  LASTBYTE will
  463.                   automatically  copy  any  ROM not already shadowed
  464.                   into  shadow  ram  if  there  is  no conflict with
  465.                   other  hardware  in  the  same  16k block.)  (This
  466.                   option  is  not available when LASTBYTE depends on
  467.                   Expanded Memory.) 
  468.  
  469.              CACHE (Abbreviated "C") 
  470.  
  471.                   Forces  LASTBYTE  to  think  that  the  PC  has  a
  472.                   cache.   This  option  should  not  be  necessary;
  473.                   LASTBYTE  automatically  detects the presence of a
  474.                   cache   and  indicates  this  in  the  information
  475.                   screen invoked by the "?" option (see below).  
  476.  
  477.  
  478.  
  479.  
  480.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  481.  
  482.  
  483.         Dec 11, 1990           The LAST BYTE (tm)                       8
  484.  
  485.  
  486.              82C202, 82C212, 82C222, 82C235, 82C241, 82C302,
  487.              82C302c, 82C307, 82C311, 82C322, 82C812, 82C841,
  488.              82411, EMS3, EMS4, EEMS 
  489.  
  490.                   Each   of   these   command  line  options  forces
  491.                   LASTBYTE  to assume a particular memory controller
  492.                   device.   Normally,  LASTBYTE  will  automatically
  493.                   detect  what's  installed;  these  options are for
  494.                   those  rare occasions when the automatic detection
  495.                   fails.   (Note:  EMS3  automatically  enables  the
  496.                   NOFRAME option described below.) 
  497.  
  498.              NOFRAME (Abbreviated "N") 
  499.  
  500.                   May  be  used  in conjunction with EMS4 or EEMS to
  501.                   use  the 64k page frame as High Dos Memory.  Doing
  502.                   so  disables  other  (normal)  use of all Expanded
  503.                   Memory.  (Note: EMS3 implies NOFRAME.) 
  504.  
  505.              ? (A question mark) 
  506.  
  507.                   Causes  LASTBYTE.SYS  to erase the screen, display
  508.                   a  summary  of  what  it  finds in the High Memory
  509.                   address  space,  and pause for two seconds to give
  510.                   the  user  an opportunity to read the information.
  511.                   To  freeze this display for a longer period, press
  512.                   <Ctrl>-S;   then   to   continue  with  CONFIG.SYS
  513.                   processing, press any key.  
  514.  
  515.         The  format  of  the APPEND, DOS, BANKSWITCH, EXCLUDE, and SHADOW
  516.         options is: 
  517.  
  518.                              <keyword>=<base>:<size>
  519.  
  520.         where  "<base>"  is  a base paragraph (segment) address expressed
  521.         as  four  hexadecimal digits, and "<size>" is kilobytes expressed
  522.         in  decimal.   For  example,  to  force  the  64k  address  range
  523.         starting  at  segment  A000 to be appended to the end of the 640k
  524.         of Conventional memory, the proper option syntax would be: 
  525.  
  526.                                  APPEND=A000:64
  527.  
  528.         (Examples  of  why this option can be useful are found in Section
  529.         12, "Video Display RAM above 640k".) 
  530.  
  531.         In  a  similar  manner,  to  force LASTBYTE to use the 32k region
  532.         starting  at  segment  F000 as High-DOS Memory, the proper option
  533.         syntax would be: 
  534.  
  535.                                    DOS=F000:32
  536.  
  537.  
  538.  
  539.  
  540.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  541.  
  542.  
  543.         Dec 11, 1990           The LAST BYTE (tm)                       9
  544.  
  545.  
  546.         (Examples  of  why this option can be useful are found in Section
  547.         11, "Using the DOS=F000:32 Option".) 
  548.  
  549.         There are two restrictions on these options: 
  550.  
  551.              o  The  base must be exactly 4 hexadecimal digits, must
  552.                 lie  at  or  above  A000,  and must be a multiple of
  553.                 0080  (2k).   (For  APPEND,  the base must always be
  554.                 A000.) 
  555.  
  556.              o  The  size must be in the range 2-384 kb, and must be
  557.                 a multiple of 2.  
  558.  
  559.  
  560.         The  reason  for  the  "multiple  of  2 (kb)" requirement is that
  561.         LASTBYTE   tries   to   allocate   memory   in   2k   increments,
  562.         corresponding  to  the  IBM  spec  that  Bios  ROM's are sized in
  563.         multiples  of  2kb.  However, this is somewhat complicated by the
  564.         coarse resolution of the memory controllers: 
  565.  
  566.         The  640k-1M  area  is partitioned into blocks.  Some controllers
  567.         use  16k  blocks,  some  use 32k blocks, and some use 64k blocks.
  568.         Each  block must be either totally enabled or disabled.  I.e., if
  569.         any  part  of  a  block's address space is occupied by an adapter
  570.         card,  the  entire block of memory must be disabled and cannot be
  571.         made  available  as  High  DOS  Memory.   Thus  the "DOS=" option
  572.         restricts  "<size>"  to multiples of the block size, and "<base>"
  573.         to addresses that begin on block boundaries.  
  574.  
  575.         Once  you  are convinced that LASTBYTE is working satisfactorily,
  576.         you  may  copy it to your hard disk and modify the CONFIG.SYS and
  577.         AUTOEXEC.BAT files there accordingly.  
  578.  
  579.  
  580.         _4_.__H_I_G_H_M_A_R_K__a_n_d__H_I_G_H_U_N_D_O_:__U_n_l_o_a_d_i_n_g__T_S_R_s__f_r_o_m__M_e_m_o_r_y__ 
  581.  
  582.         Sometimes  it  can  be  useful  to  remove one or more TSR's from
  583.         memory,  either  because  you  no longer want to use the features
  584.         that  they  provide  or perhaps in order to make room for another
  585.         set of TSR's.  
  586.  
  587.         In  order to be able to remove a group of TSR's from high memory,
  588.         they  must  be be marked.  To mark them, run HIGHMARK once before
  589.         you  use  HIGHTSR  to  load  the  TSR's.   Then later, simply run
  590.         HIGHUNDO  -  the  mark  and  all  of its assoicated TSR's will be
  591.         removed.  
  592.  
  593.         HIGHMARK  may  be  executed more than once to establish levels of
  594.         TSR's  to  be removed.  Each execution of HIGHMARK places another
  595.         mark  in  memory  with a unique mark number.  Every TSR loaded by
  596.         HIGHTSR   is   automatically  associated  with  the  most  recent
  597.  
  598.  
  599.  
  600.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  601.  
  602.  
  603.         Dec 11, 1990           The LAST BYTE (tm)                      10
  604.  
  605.  
  606.         execution  of  HIGHMARK.   You  can use HIGHMEM to see the marks,
  607.         their  mark  number,  and  the  set  of TSR's associated with the
  608.         mark.   Every  execution  of HIGHUNDO will then remove the set of
  609.         TSR's associated with the most recent HIGHMARK.  
  610.  
  611.         You  may  specify  a  mark level on the command line of HIGHMARK.
  612.         This  will  cause it to remove all the TSR's and marks whose mark
  613.         number  is  greater  than  or  equal to the number on the command
  614.         line.  
  615.  
  616.  
  617.         _5_.__H_I_G_H_I_N_S_T_:__L_o_a_d_i_n_g__S_H_A_R_E_._E_X_E__i_n_t_o__H_i_g_h__M_e_m_o_r_y___ 
  618.  
  619.         DOS  4 now installs the SHARE program automatically if you have a
  620.         hard  disk which is greater than 32 MB in a single partition.  It
  621.         does  this  without  asking  because  otherwise it is possible to
  622.         corrupt  the  data on the disk when running programs that use the
  623.         old File Control Block (FCB) approach to access files.  
  624.  
  625.         Unfortunately,  some  internal  parts of DOS still use FCB's!  So
  626.         don't  try to prevent SHARE from being loaded by removing it from
  627.         your  system!  If DOS can't find it, you'll get a warning message
  628.         during  the  boot  saying  that "SHARE should be loaded for large
  629.         media".   You  could  load it during AUTOEXEC.BAT processing, but
  630.         you'll  still  get  the  warning  because the check occurs during
  631.         CONFIG.SYS processing.  
  632.  
  633.         So  how  can  you  load this TSR into High Memory without getting
  634.         the  warning?   DOS  recently introduced the "INSTALL=" directive
  635.         that  allows  TSR's to be installed during CONFIG.SYS processing.
  636.         Programs  that  Microsoft  suggests  be  loaded  in  this  manner
  637.         include FASTOPEN, KEYB, NLSFUNC, and SHARE.  For example: 
  638.  
  639.                             INSTALL=C:\DOS\SHARE.EXE
  640.  
  641.         However,  the  above  command  causes  SHARE to be loaded down in
  642.         Conventional Memory.  To get it into High Memory, use: 
  643.  
  644.                       INSTALL=HIGHINST.EXE C:\DOS\SHARE.EXE
  645.  
  646.         HIGHTSR  works  too, but you get an error message about the above
  647.         line  in  CONFIG.SYS.   This  is because the DOS expects the name
  648.         that  immediately  follows  the  equals  sign  to  be  a TSR, and
  649.         anything else (e.g., HIGHTSR) will cause the error message.  
  650.  
  651.         HIGHINST  is a copy of HIGHTSR that has been modified to be a TSR
  652.         so  that  this  error  message  can  be  avoided.  Since HIGHINST
  653.         itself  is a TSR, a small part of it will remain resident down in
  654.         Conventional Memory, but only 96 bytes.  
  655.  
  656.  
  657.  
  658.  
  659.  
  660.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  661.  
  662.  
  663.         Dec 11, 1990           The LAST BYTE (tm)                      11
  664.  
  665.  
  666.         _6_.__T_h_e__/_S_I_Z_E__o_p_t_i_o_n__o_f__H_I_G_H_D_R_V_R__H_I_G_H_T_S_R__a_n_d__H_I_G_H_I_N_S_T_ 
  667.  
  668.         The  amount  of  High-DOS memory required to load a device driver
  669.         or  TSR  (hereafter  called the "load requirement") is the larger
  670.         of  two  amounts:  (1)  the amount required during initialization
  671.         (greater  than  or  equal  to  the  size of the file) and (2) the
  672.         amount required when finally resident.  
  673.  
  674.         Although  the  final  resident  requirement  of  any  high-loaded
  675.         software  may  be obtained from the HIGHMEM output, remember that
  676.         the  initialization  (and  thus  the  load)  requirement  may  be
  677.         greater than EITHER the file size or the HIGHMEM listing! 
  678.  
  679.         Most   device   drivers   and   TSR's  require  more  memory  for
  680.         initialization  than  when  resident,  although  there  are a few
  681.         (such   as   SMARTDRV.SYS  and  NANSI.SYS)  which  require  extra
  682.         resident  memory  for  buffers,  etc.  And then there's the weird
  683.         behavior  of  FASTOPEN and MODE that require even more than this!
  684.         (See   section   8,  "Installing  FASTOPEN  and  MODE  into  High
  685.         Memory".)  Thus  the  normal  operation of HIGHDRVR, HIGHTSR, and
  686.         HIGHINST  is  to  use  the  largest free High-DOS memory block to
  687.         load  the  driver since the resident memory requirement cannot be
  688.         determined   until   after  the  software  has  been  loaded  and
  689.         initialized.  
  690.  
  691.         Unfortunately,  this  can  lead  to  a  less  than optimum use of
  692.         memory.   If  the  memory  requirements were known, then a memory
  693.         block  could  be  selected using a "best fit" strategy; i.e., the
  694.         smallest  free  High-DOS  memory  block  which  is larger than or
  695.         equal  to  the  load  requirement.   This usually results in much
  696.         better utilization of memory.  
  697.  
  698.         HIGHDRVR,  HIGHTSR, and HIGHINST have a special option /SIZE that
  699.         can be used to report the load requirement: 
  700.  
  701.                         DEVICE=HIGHDRVR.SYS /SIZE SMARTDRV.SYS 2048 512
  702.                 or:     INSTALL=HIGHINST.EXE /SIZE SHARE.EXE
  703.                 or:     HIGHTSR /SIZE PRINT.COM /D:PRN
  704.  
  705.         The  load requirement will then be displayed on the console after
  706.         the  software  has been loaded and initialized.  This information
  707.         can  then be used to specify the value (expressed in bytes) to be
  708.         used  with  the  /SIZE  option  to force a "best fit" allocation.
  709.         For example: 
  710.  
  711.                         DEVICE=HIGHDRVR.SYS /SIZE:16240 SMARTDRV.SYS 2048 512
  712.                 or:     INSTALL=HIGHINST.EXE /SIZE:13616 SHARE.EXE
  713.                 or:     HIGHTSR /SIZE:17120 PRINT.COM /D:PRN
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  721.  
  722.  
  723.         Dec 11, 1990           The LAST BYTE (tm)                      12
  724.  
  725.  
  726.         _7_.__T_h_e__/_N_O_E_N_V__o_p_t_i_o_n__o_f__H_I_G_H_T_S_R__a_n_d__H_I_G_H_I_N_S_T__ 
  727.  
  728.         All  programs,  including  TSR's,  are  allocated  two regions of
  729.         memory  when  they  are  loaded:  One is the area for the program
  730.         itself,  and  the  other  is for a copy of the environment.  Most
  731.         TSR's  don't  make  use  of  their environment, and some actually
  732.         release it to the operating system rather than hanging onto it.  
  733.  
  734.         If  HIGHMEM  finds  an environment block, the corresponding entry
  735.         in  the  "Description"  column will have the name of the TSR that
  736.         it  belongs  to  (such as "CLOCK.EXE") followed by the indication
  737.         "[Env]".    Occassionally,  you  may  see  a  similar  indication
  738.         "[Dat]";  this  is  a  data block explicitly allocated by the TSR
  739.         for some unknown purpose.  
  740.  
  741.  
  742.                         TSRs that eliminate their PSP   
  743.  
  744.              The  authors  of  some  TSR's  attempt to save a little
  745.              extra  memory  by  having  the  TSR  eliminate  its own
  746.              Program  Segment  Prefix  (PSP)  during initialization.
  747.              Doing  so makes it impossible for HIGHTSR, HIGHINST, or
  748.              HIGHMEM   to  identify  the  TSR's  environment  block.
  749.              However,  this  byte-saving mentality will usually mean
  750.              that  the TSR's initialization code also eliminates its
  751.              environment block, so this is rarely a problem.  
  752.  
  753.  
  754.         If  you  see  a  block labelled "[Env]" in the output of HIGHMEM,
  755.         then  you can use the following command line option of HIGHTSR or
  756.         HIGHINST to release this memory, even if the TSR didn't: 
  757.  
  758.                         INSTALL=HIGHINST.EXE /NOENV CLOCK.EXE 
  759.                 or:     HIGHTSR /NOENV CLOCK 
  760.  
  761.         The  /NOENV  (and /SIZE) options must PRECEDE the name of the TSR
  762.         that  is  to  be loaded high by HIGHTSR or HIGHINST.  Case of the
  763.         option is insignificant.  
  764.  
  765.  
  766.         _8_.__I_n_s_t_a_l_l_i_n_g__F_A_S_T_O_P_E_N__a_n_d__M_O_D_E__i_n_t_o__H_i_g_h__M_e_m_o_r_y__ 
  767.  
  768.         The  FASTOPEN and MODE programs that comes with DOS are TSR's and
  769.         as  such  may  be  loaded into high memory with either HIGHTSR or
  770.         HIGHINST.   Once  installed,  each  requires  very little memory,
  771.         something  on  the  order  of 10k or less.  However, neither will
  772.         install  unless  a  LOT  of  memory  is  available,  like  around
  773.         50-90k.   (The  actual requirement depends partly on command line
  774.         options;  you  can  determine  the  requirement  using  the /SIZE
  775.         option of HIGHTSR or HIGHINST.) 
  776.  
  777.  
  778.  
  779.  
  780.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  781.  
  782.  
  783.         Dec 11, 1990           The LAST BYTE (tm)                      13
  784.  
  785.  
  786.         The  worst  part  is  that  if  FASTOPEN  fails to install itself
  787.         successfully,  it  doesn't  issue  any  error message - it simply
  788.         doesn't   display   the   normal   "FASTOPEN  installed"  sign-on
  789.         message.   Moral:  Let  FASTOPEN and MODE be the first TSR's that
  790.         are  installed into High Memory in your AUTOEXEC.BAT file so that
  791.         they get access to the maximum amount of memory.  
  792.  
  793.         The  second  hassle  with  these two TSR's is that they cannot be
  794.         removed  by  using  HIGHMARK and HIGHUNDO.  Evidently they modify
  795.         memory  other  than  that  tracked by the LASTBYTE utilities: the
  796.         interrupt vector table and that memory allocated to them.  
  797.  
  798.  
  799.         _9_.__H_I_G_H_D_I_S_K_:__A__R_a_m__D_i_s_k__i_n__B_a_n_k_-_S_w_i_t_c_h__M_e_m_o_r_y__ 
  800.  
  801.         HIGHDISK.SYS  is  a  device  driver  that  uses  high  memory  to
  802.         implement  a  Ram  Disk.   Bank-Switch Memory is allocated first,
  803.         and  if  that  isn't enough, then High-DOS Memory is allocated to
  804.         satisfy  the total page request.  The device driver itself may be
  805.         loaded   into   high   memory   by  using  HIGHDRVR.SYS  to  load
  806.         HIGHDISK.SYS.  
  807.  
  808.  
  809.                             Minimum Requirement      
  810.  
  811.              The  amount  of  available  Bank-Switch  memory must be
  812.              sufficient  to  hold  the  Ram  Disk's boot sector, one
  813.              copy  of  the FAT, and the directory.  Normally this is
  814.              not  a problem, but may require that HIGHDISK be loaded
  815.              before HIGHEMS3 (or HIGHEMS4).  
  816.  
  817.  
  818.         A typical command in CONFIG.SYS might be: 
  819.  
  820.                         DEVICE=HIGHDRVR.SYS HIGHDISK.SYS
  821.  
  822.         This  creates  a  RAM  disk  that uses all available High Memory,
  823.         with 32 directory entries and sectors of 128 bytes each.  
  824.  
  825.         A  command  line option may be used to change the size of the RAM
  826.         disk as in: 
  827.  
  828.                       DEVICE=HIGHDRVR.SYS HIGHDISK.SYS 100
  829.  
  830.         This creates a 100k byte RAM disk.  
  831.  
  832.         Other  command  line  options may be used to change the number of
  833.         bytes per sector and directory entries, as in: 
  834.  
  835.                    DEVICE=HIGHDRVR.SYS HIGHDISK.SYS 100 256 64
  836.  
  837.  
  838.  
  839.  
  840.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  841.  
  842.  
  843.         Dec 11, 1990           The LAST BYTE (tm)                      14
  844.  
  845.  
  846.         This  creates  a  100k  RAM disk with 256 bytes per sector and 64
  847.         root directory entries.  
  848.  
  849.  
  850.         _1_0_.__W_i_n_d_o_w_s__3_._0__C_o_m_p_a_t_i_b_i_l_i_t_y______ 
  851.  
  852.         In  general,  LASTBYTE  has  a  high degree of compatibility with
  853.         Windows  3.0.   However,  if  you  use  the  386 Enhanced Mode of
  854.         Windows 3.0, there are some fine points that need clarification: 
  855.  
  856.  
  857.         10.1 Modifying the Windows SYSTEM.INI File     
  858.  
  859.         On  a 386 or 386sx with Windows 3.0 running in 386 enhanced mode,
  860.         LASTBYTE  and  WINDOWS  will both try to use the high memory area
  861.         between   640k-1M,  thus  creating  a  conflict.   To  avoid  the
  862.         conflict,  you must ask WINDOWS not to use this region.  This can
  863.         be  done  with  a configuration option in the [386Enh] section of
  864.         the Windows SYSTEM.INI file: 
  865.  
  866.                               EMMExclude=A000-FFFF
  867.  
  868.         If  you have used the "EXCLUDE" option of LASTBYTE.SYS to disable
  869.         any  region of the high memory, then Windows may be told it is ok
  870.         to  use  that area.  For example, if LASTBYTE is loaded using the
  871.         line: 
  872.  
  873.                        DEVICE=LASTBYTE.SYS EXCLUDE=D000:64
  874.  
  875.         then  you may use the following configuration option (in addition
  876.         to the EMMExclude option above) in your SYSTEM.INI file: 
  877.  
  878.                               EMMInclude=D000-DFFF
  879.  
  880.         The  EMMInclude  option  will take precedence over the EMMExclude
  881.         option when the two overlap, as above.  
  882.  
  883.  
  884.         10.2 HIGHMEM and Windows 386 Enhanced Mode    
  885.  
  886.         DOS  applications  (such  as HIGHMEM) run from inside Windows 3.0
  887.         are  given  their  own  "virtual" address space of 640k.  Windows
  888.         tells  the  386  processor to map memory references in this space
  889.         to  the  particular  640k  of  physical  memory  which  has  been
  890.         allocated  to the application.  References outside this range are
  891.         considered  invalid  and thus return garbage.  Since HIGHMEM is a
  892.         program  that  inspects memory between 640k-1M, there's no way it
  893.         can  execute  properly  in this context.  Outside of Windows, and
  894.         in  any  mode  other  than 386 Enhanced Mode, HIGHMEM will behave
  895.         normally.  
  896.  
  897.  
  898.  
  899.  
  900.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  901.  
  902.  
  903.         Dec 11, 1990           The LAST BYTE (tm)                      15
  904.  
  905.  
  906.  
  907.         10.3 HIGHDISK and Windows 386 Enhanced Mode    
  908.  
  909.         HIGHDISK.SYS  also  uses  memory  in  the 640k-1M range and so is
  910.         susceptible  to  the  same  problems  that HIGHMEM experiences as
  911.         discussed  above in Section 10.2.  Outside of Windows, and in any
  912.         mode   other   than  386  Enhanced  Mode,  HIGHDISK  will  behave
  913.         normally.  
  914.  
  915.  
  916.         _1_1_.__U_s_i_n_g__t_h_e__D_O_S_=_F_0_0_0_:_3_2__O_p_t_i_o_n_____ 
  917.  
  918.         The  64k  region  starting  at paragraph address F000 is the Bios
  919.         ROM.   Many  of the popular 286, 386, and 386sx clones use a Bios
  920.         ROM  developed  by  AMI  or Phoenix.  The more recent versions of
  921.         these  ROMs  devote  the first 32k to initialization code that is
  922.         only  used  during  the boot sequence, and use the second 32k for
  923.         that  portion  that  must  remain  available at all times.  (This
  924.         *SEEMS*  to  be  true of the Award Bios as well, but has not been
  925.         verified.) 
  926.  
  927.         By  the time your PC gets to the point in its boot sequence where
  928.         it  is setting up the device drivers (e.g., when it is installing
  929.         LASTBYTE.SYS),   the   Bios  initialization  code  is  no  longer
  930.         needed.   If you have one of these AMI or Phoenix Bios chips, you
  931.         can  capture  another  32k  of high memory by using a DOS=F000:32
  932.         option    (see    Section    3,   "Command   Line   Options   For
  933.         LASTBYTE.SYS").  
  934.  
  935.         Of  course,  whenever  you  press Ctrl-Alt-Del to do a warm boot,
  936.         the  ROM  Bios  initialization  code  needs to be executed again!
  937.         And  that could be a problem since you've effectively disabled it
  938.         with   the   DOS=F000:32   option!    Fortunately,   LASTBYTE.SYS
  939.         intercepts   all   keyboard  input  and  keeps  an  eye  out  for
  940.         Ctrl-Alt-Del.   When it sees the warm boot request, it will force
  941.         a  COLD  BOOT  if  you've  used  the  DOS=F000:32  option.   This
  942.         re-enables  the  entire  64k  Bios ROM so that the initialization
  943.         code  is  reactivated  before  the processor tries to execute it.
  944.         Otherwise a normal warm boot is used.  
  945.  
  946.  
  947.                                Keyboard TSRs      
  948.  
  949.              Some  TSRs intercept the keyboard hardware interrupt 9,
  950.              and  will  jump  directly  into a fixed location in the
  951.              Bios   ROM   where   the   Warm   Boot   code   begins.
  952.              Unfortunately,  this  will bypass LASTBYTE's attempt to
  953.              turn the ROM back on.  
  954.  
  955.  
  956.  
  957.  
  958.  
  959.  
  960.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  961.  
  962.  
  963.         Dec 11, 1990           The LAST BYTE (tm)                      16
  964.  
  965.  
  966.         _1_2_.__V_i_d_e_o__D_i_s_p_l_a_y__R_A_M__a_b_o_v_e__6_4_0_k____ 
  967.  
  968.         In  general,  the  region A0000-BFFFF is the video display buffer
  969.         area.   Various  display  adapters  (MDA, Hercules, CGA, EGA, and
  970.         VGA)  typically  use only a small subset of this space.  LASTBYTE
  971.         automatically  senses  what  kind  of  video  display  adapter is
  972.         installed  and  reserves  that portion of this address space that
  973.         might  POTENTIALLY  be  used  by  the adapter.  You can determine
  974.         where  these  areas  are with the HIGHMEM command or with the "?"
  975.         option on the command line of LASTBYTE.SYS.  
  976.  
  977.         Theoretically,  neither  the  EGA  or  VGA  should  use  the  32k
  978.         monochrome  region  (B0000-B7FFF),  and only use the 64k graphics
  979.         buffer   (A0000-AFFFF)   in   high-resolution   graphics   modes.
  980.         However,  the  ROM  Bios  of  a few EGA or VGA adapters have been
  981.         known  to  write  into  one  or  more of these areas even if they
  982.         aren't  in  monochrome  or  graphics  mode.   Thus  when LASTBYTE
  983.         detects  an  EGA  or  VGA  adapter,  it  reserves the entire 128k
  984.         display buffer between A0000-BFFFF.  
  985.  
  986.         If  a Hercules adapter is found, LASTBYTE reserves the entire 64k
  987.         range   B0000-BFFFF   as  Bank-Switch  memory  in  case  Hercules
  988.         graphics  modes are used although only the first 4k of this space
  989.         is used for text modes.  
  990.  
  991.         Like  the  text-only  mode  of  a  Hercules  card, an MDA adapter
  992.         should  use  only  the  4k  range  B0000-B0FFF,  and clearing the
  993.         screen  with  a  DOS  "CLS"  command  should  erase the screen by
  994.         writing  (only)  in  this  region.  However, the ROM BIOS on some
  995.         clones  assumes  that the MDA display buffer fills a larger (16k)
  996.         region  between  B0000-B3FFF and may write into memory beyond the
  997.         first 4k.  
  998.  
  999.         Similarly,  the  four  video  text pages of the CGA, EGA, and VGA
  1000.         adapters   occupy  only  the  16k  range  B8000-BBFFF,  but  some
  1001.         software will write to the second 16k between BC000-BFFFF.  
  1002.  
  1003.         Therefore,  if  any  (monochrome)  Display Buffer RAM is found at
  1004.         B0000,  LASTBYTE  reserves  the entire 32k range B0000-B7FFF.  If
  1005.         any  (CGA,  EGA  or  VGA)  Display  Buffer RAM is found at B8000,
  1006.         LASTBYTE reserves the entire 32k range B8000-BFFFF.  
  1007.  
  1008.         You  may  choose  to  override these rather conservative defaults
  1009.         with  the  "DOS="  command  line  option  as described below.  In
  1010.         addition  to  the  constraints  imposed  by your particular video
  1011.         display  adapter,  the  resolution  of the memory controller chip
  1012.         may  limit  what  you  can  do.  For more information, review the
  1013.         discussion    in   Section   3,   "Command   Line   Options   For
  1014.         LASTBYTE.SYS".  
  1015.  
  1016.         The  following  chart  summarizes the conservative approach taken
  1017.  
  1018.  
  1019.  
  1020.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  1021.  
  1022.  
  1023.         Dec 11, 1990           The LAST BYTE (tm)                      17
  1024.  
  1025.  
  1026.         by  LASTBYTE  as  well  as what "DOS=" options you may be able to
  1027.         use: 
  1028.  
  1029.         Display         Reserved        "DOS="                  "APPEND="
  1030.         Adapter         by default      Options                 Options
  1031.         -------         -----------     --------                ---------
  1032.         Monochrome      B0000-B7FFF     A000:64         or      A000:64
  1033.                                         B400:16         and     A000:64
  1034.  
  1035.         Hercules        B0000-BFFFF     A000:64         or      A000:64
  1036.                                         B400:48 (1)     and     A000:64
  1037.  
  1038.         CGA             B8000-BFFFF     A000:96         or      A000:96
  1039.                                         BC00:16 (2)     and     A000:96
  1040.  
  1041.         EGA and VGA     A0000-BFFFF     A000:64 (1)     or      A000:96
  1042.                                         B000:32         and     A000:64
  1043.                                         BC00:16 (2,3)   and     A000:96
  1044.  
  1045.         VGA Bios Rom    C0000-C7FFF     C600:8 (4)
  1046.  
  1047.                   Notes:  (1) Cannot be used with graphics modes.
  1048.                           (2) WINDOWS 3.0 may write in this area!
  1049.                           (3) May be combined with DOS=B000:32.
  1050.                           (4) See section 13, "Video Adapter Bios ROMs"
  1051.  
  1052.         _1_3_.__V_i_d_e_o__A_d_a_p_t_e_r__B_i_o_s__R_O_M_s_____ 
  1053.  
  1054.         MDA  and CGA use the standard ROM Bios; they have no ROM of their
  1055.         own.   EGA  and  VGA adapters, however, incorporate their own ROM
  1056.         Bios  chip  right  on  the  adapter  card.  LASTBYTE successfully
  1057.         recognizes these ROMs, but has to treat VGA in a special manner: 
  1058.  
  1059.         The  VGA  adapter  made  by  IBM  has  a  24k  ROM  installed  at
  1060.         C0000-C5FFF,  which  means  that  the 8k at C6000-C7FFF should be
  1061.         usable.   Although  almost  all  VGA  clones have a ROM signature
  1062.         that  indicates  24k,  many of them use the C6000-C7FFF space for
  1063.         ROM  Bios  or  RAM  extensions  that  provide  their  "Super VGA"
  1064.         features.    In   particular,   the  Video7  and  Paradise  VGA's
  1065.         incorporate  their  own  RAM from C6000-C7FFF.  (This may also be
  1066.         true  of  other  VGA boards that uses a VLSI chip manufactured by
  1067.         Chips   and  Technologies,  Tseng  Labs,  Paradise,  or  Headland
  1068.         Technologies.)   For  this  reason, when LASTBYTE finds anybody's
  1069.         VGA  adapter, it automatically assumes that there is a 32k ROM at
  1070.         C0000-C7FFF.  
  1071.  
  1072.         _1_4_.__H_I_G_H_A_P_N_D_:__S_t_r_e_t_c_h_i_n_g__C_o_n_v_e_n_t_i_o_n_a_l__M_e_m_o_r_y__b_e_y_o_n_d__6_4_0_k___ 
  1073.  
  1074.         HIGHAPND.EXE  is  a  program that can only be used in conjunction
  1075.         with  the  "APPEND="  option  of LASTBYTE.SYS.  HIGHAPND.SYS is a
  1076.         device  driver  version  of  HIGHAPND.EXE.  Either can be used to
  1077.  
  1078.  
  1079.  
  1080.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  1081.  
  1082.  
  1083.         Dec 11, 1990           The LAST BYTE (tm)                      18
  1084.  
  1085.  
  1086.         append  some  of  the  memory that begins at 640k onto the end of
  1087.         DOS  Conventional  (low)  memory  (and  also  to  return later to
  1088.         640k).  
  1089.  
  1090.         Monochrome  (MDA),  Hercules,  and CGA display adapters don't use
  1091.         the  64k  region starting at A000, and so this memory can be used
  1092.         to  extend  conventional  memory  from 640k to 704k.  CGA display
  1093.         adapters  also  don't  use  the next 32k either, and so CGA users
  1094.         may extend conventional memory all the way to 736k.  
  1095.  
  1096.         EGA  and  VGA  display adapters have a 64k hi-resolution graphics
  1097.         display  buffer  that  is  located  at A000.  This buffer is only
  1098.         needed  when you are using only hi-resolution graphics.  When the
  1099.         display  is  in either text or low-resolution CGA graphics modes,
  1100.         this  memory  is not used, and may be used to extend conventional
  1101.         memory.   Since  most  EGA and VGA adapters usually don't use the
  1102.         32k  region  at B000, you may even be able to extend conventional
  1103.         memory up to 736k.  
  1104.  
  1105.         HIGHAPND  will automatically disable any EGA or VGA hi-resolution
  1106.         graphics   capability   whenever  conventional  memory  has  been
  1107.         extended  beyond  640k.   This  makes  software  that attempts to
  1108.         sense  what  type  of display adapter is installed think that you
  1109.         have  only  a  CGA  adapter.   Later,  when you need the graphics
  1110.         capability,   you   can   disable   the   memory   extension  and
  1111.         hi-resolution graphics will be automatically re-enabled.  
  1112.  
  1113.         HIGHAPND.SYS can be used during CONFIG.SYS processing: 
  1114.  
  1115.                 DEVICE=HIGHAPND.SYS ON  {Extends conv. memory beyond 640k}
  1116.  
  1117.                 DEVICE=HIGHAPND.SYS OFF {Resets conv. memory to 640k}
  1118.  
  1119.                 Note:   HIGHAPND.SYS may not work properly with some versions
  1120.                         of DOS; in such cases, use HIGHAPND.EXE instead.
  1121.  
  1122.         or  HIGHAPND.EXE can be used during AUTOEXEC.BAT processing or at
  1123.         any time after the computer is booted: 
  1124.  
  1125.                 A>HIGHAPND ON   {Extends conv. memory beyond 640k}
  1126.  
  1127.                 A>HIGHAPND OFF  {Resets conv. memory to 640k}
  1128.  
  1129.                 Note:   HIGHAPND.EXE may not work properly with DR DOS;
  1130.                         in such cases, use HIGHAPND.SYS instead.
  1131.  
  1132.         HIGHAPND  (or  HIGHMEM)  can  be  used  without  any command line
  1133.         options  to determine the current size of conventional memory and
  1134.         the state of EGA/VGA hi-resolution graphics: 
  1135.  
  1136.                 A>HIGHAPND 
  1137.  
  1138.  
  1139.  
  1140.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  1141.  
  1142.  
  1143.         Dec 11, 1990           The LAST BYTE (tm)                      19
  1144.  
  1145.  
  1146.  
  1147.         You  can  put  these  commands  into  a  batch  file  to simplify
  1148.         switching  back  and  forth.   For example, if you want the extra
  1149.         memory  all  the  time  except  when you need hi-res graphics for
  1150.         WINDOWS, create a batch file like the following to run windows: 
  1151.  
  1152.                 @ECHO OFF 
  1153.                 HIGHAPND OFF 
  1154.                 WIN %1 %2 
  1155.                 HIGHAPND ON 
  1156.  
  1157.         If  you  have  hi-res  graphics  disabled  and run a program that
  1158.         tries  to use hi-res graphics without first sensing for an EGA or
  1159.         VGA  adapter,  LASTBYTE  will notice the conflict, issue an error
  1160.         message,  and  terminate  the  program.  Some programs redirect a
  1161.         few  interrupts during their initialization and then restore them
  1162.         before  termination.  LASTBYTE's termination of graphics programs
  1163.         doesn't  know  how  to restore these interrupts, so in some cases
  1164.         you  may  have  to  reboot  the computer.  In other words, if you
  1165.         experience  this  kind of program termination with an application
  1166.         program,  it's  best  to prepare a batch file (as shown above) to
  1167.         run the program.  
  1168.  
  1169.                                       Notes
  1170.  
  1171.              o  The  use  of  HIGHAPND.EXE  requires  the  use of an
  1172.                 APPEND=A000:??   option   on  the  LASTBYTE  command
  1173.                 line.  
  1174.  
  1175.              o  There  is  no  benefit to using HIGHDRVR.SYS to load
  1176.                 HIGHAPND.SYS  into  high  memory  because  it  never
  1177.                 stays resident.  
  1178.  
  1179.  
  1180.         _1_5_.__U_s_i_n_g__T_h_e__L_a_s_t__B_y_t_e__w_i_t_h__E_x_p_a_n_d_e_d__M_e_m_o_r_y__ 
  1181.  
  1182.         Expanded  memory always has an associated device driver.  If that
  1183.         driver  is loaded before LASTBYTE.SYS in the CONFIG.SYS file (and
  1184.         if  the  hardware is enabled) LASTBYTE will recognize the 64k EMM
  1185.         Page  Frame  of  the  expanded  memory and do the right thing: It
  1186.         will  treat the Page Frame like any other Adapter Ram and disable
  1187.         the  motherboard RAM that falls in the same address space so that
  1188.         it  doesn't  interfere  with the Page Frame.  For example, if the
  1189.         EMM  driver  is  loaded first (as described above), LASTBYTE will
  1190.         report the 64k EMM Page Frame as "EMS Page Frame".  
  1191.  
  1192.         This  works  fine,  of  course,  but loading the EMM driver first
  1193.         precludes  the  possibility  of  loading it into High Memory.  To
  1194.         get  the  EMM  driver  in  to  High  Memory means that it must be
  1195.         loaded after LASTBYTE.SYS, but you must be careful! 
  1196.  
  1197.  
  1198.  
  1199.  
  1200.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  1201.  
  1202.  
  1203.         Dec 11, 1990           The LAST BYTE (tm)                      20
  1204.  
  1205.  
  1206.         If   LASTBYTE.SYS  is  loaded  first,  the  Page  Frame  will  be
  1207.         recognized  only  in  two  cases:  (1) The Page Frame used by the
  1208.         Expanded   Memory   controller   built   into   some   Chips  and
  1209.         Technologies  chipsets  will  be  recognized and reported as "EMS
  1210.         Page  Frame".  (2) The Page Frame of a REAL expanded memory board
  1211.         is  (if  enabled)  recognized  and reported as "Adapter RAM".  In
  1212.         either case, LASTBYTE will not use that memory space.  
  1213.  
  1214.  
  1215.                            Recognizing EMS Boards     
  1216.  
  1217.              Some  EMS boards must be enabled by their device driver
  1218.              before   they   respond  as  read/write  memory.   This
  1219.              prevents  LASTBYTE  from recognizing them, and you will
  1220.              have  to  use  a  "BANKSWITCH=" option to keep LASTBYTE
  1221.              from using the Page Frame memory space.  
  1222.  
  1223.  
  1224.         If  you  don't  have  an  expanded  memory board, but have used a
  1225.         device  driver  (like  EMM386.SYS)  that EMULATES expanded memory
  1226.         using  extended memory, then LASTBYTE.SYS will not know about the
  1227.         page  frame unless the emulator is loaded first.  If LASTBYTE.SYS
  1228.         is   loaded   first,   then   you  must  use  a  "EXCLUDE="  (not
  1229.         "BANKSWITCH="!)  command line option of LASTBYTE.SYS to reserve a
  1230.         64k  region where the emulated Page Frame can be placed.  (Do NOT
  1231.         use  a  corresponding  EMMInclude option in the SYSTEM.INI file.)
  1232.         For  EMM386.SYS,  this  64k  region must lie at C000, C400, C800,
  1233.         CC00, D000, D400, D800, DC00, or E000.  
  1234.  
  1235.  
  1236.         _1_6_.__H_I_G_H_E_M_S_:__E_m_u_l_a_t_i_n_g__E_x_p_a_n_d_e_d__M_e_m_o_r_y__w_/_B_a_n_k_-_S_w_i_t_c_h__M_e_m_o_r_y___ 
  1237.  
  1238.         Two  Expanded  Memory Emulators are provided with LASTBYTE.  Both
  1239.         use  high  memory  as Expanded Memory.  HIGHEMS3.SYS is compliant
  1240.         with  the older LIM 3.2 spec, and HIGHEMS4.SYS with the newer LIM
  1241.         4.0  spec.   Both  are  included  since the HIGHEMS3.SYS requires
  1242.         much   less   memory   for   the   device   driver   itself  than
  1243.         HIGHEMS4.SYS.   In  many  applications,  you may find that 3.2 is
  1244.         all you need.  
  1245.  
  1246.         These  device  drivers  EMULATE Expanded Memory!  That means that
  1247.         they  use  software  to  copy  data  back  and  forth between the
  1248.         logical  EMS  memory (pages) and the Page Frame.  Obviously, this
  1249.         is  MUCH  slower  than  the  performance  you  would realize with
  1250.         hardware  support,  or  even  with  EMM386.SYS.  Therefore, these
  1251.         device  drivers  are  provided for those who have no other way of
  1252.         providing  EMS  memory  to their applications, such as users with
  1253.         only 1Meg of memory.  
  1254.  
  1255.         Both  HIGHEMS3.SYS and HIGHEMS4.SYS have an optional command line
  1256.         parameter  which  is the number of 16k EMS pages to allocate.  If
  1257.  
  1258.  
  1259.  
  1260.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  1261.  
  1262.  
  1263.         Dec 11, 1990           The LAST BYTE (tm)                      21
  1264.  
  1265.  
  1266.         omitted,  the  maximum  allocation  will  be  used.   Bank-Switch
  1267.         Memory  is  allocated first, and if that isn't enough, then other
  1268.         High Memory is allocated to satisfy the total page request.  
  1269.  
  1270.         Use  only  one  of  these  device  drivers,  and  load  it  AFTER
  1271.         LASTBYTE.SYS.   The  driver itself may be loaded into high memory
  1272.         using HIGHDRVR.SYS.  
  1273.  
  1274.  
  1275.                                 Suggestion       
  1276.  
  1277.              On  a  machine  with no expanded memory, you might want
  1278.              to  use  HIGHEMS3  to  provide some Expanded Memory for
  1279.              Charles  Lazo's scroll-back TSR, WAS.COM.  This utility
  1280.              saves  lines  of  text  that have been scrolled off the
  1281.              top  of  the  screen  and  allows you to pull them back
  1282.              down  for  review.   WAS  is available from a number of
  1283.              BBS's,   usually   under  the  filename  WAS050.ZIP  or
  1284.              WAS050.ARC.  
  1285.  
  1286.  
  1287.         _1_7_.__F_i_n_e_-_T_u_n_i_n_g__y_o_u_r__A_d_a_p_t_e_r__H_a_r_d_w_a_r_e__C_o_n_f_i_g_u_r_a_t_i_o_n____ 
  1288.  
  1289.         Many  adapter  cards occupy some portion of the 640k-1Meg address
  1290.         space.   Some  of  these  cards,  such  as SCSI Disk Controllers,
  1291.         often  have  DIP  switches or jumpers that can be used to set the
  1292.         address space they occupy to one of a few chioces.  
  1293.  
  1294.         If  the memory map displayed by HIGHMEM is fragmented because one
  1295.         of  these adapters sits between two "....DOS Free" areas, you may
  1296.         want  to  try  to  reposition  the address space occupied by that
  1297.         adapter  by  modifying  the  DIP switch or jumper settings on the
  1298.         card.  
  1299.  
  1300.         Having  one  large  free  memory block is better than two smaller
  1301.         ones  because TSR's and device drivers almost always require more
  1302.         memory  during  initialization  than  once  installed.   In other
  1303.         words,  neither of the two smaller blocks may be large enough for
  1304.         the installation, but might if they were combined.  
  1305.  
  1306.  
  1307.         _1_8_.__U_s_i_n_g__H_I_G_H_U_M_M_._S_Y_S__w_i_t_h__4_D_O_S_____ 
  1308.  
  1309.         4DOS  is  a  shareware  replacement for COMMAND.COM.  HIGHUMM.SYS
  1310.         may  be  used  to  move the 4DOS command processor and its master
  1311.         environment  into  "Upper Memory Blocks" (UMB's) between 640k and
  1312.         1M,  thus  reducing  the amount of conventional memory below 640k
  1313.         used by 4DOS from 3.4k bytes to 256 bytes.  
  1314.  
  1315.         If  you  are using HIMEM.SYS to manage Extended Memory, then your
  1316.         CONFIG.SYS file should load HIGHUMM.SYS after HIMEM.SYS, as in: 
  1317.  
  1318.  
  1319.  
  1320.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  1321.  
  1322.  
  1323.         Dec 11, 1990           The LAST BYTE (tm)                      22
  1324.  
  1325.  
  1326.  
  1327.                 DEVICE=LASTBYTE.SYS {and any LASTBYTE options}
  1328.                 DEVICE=HIGHDRVR.SYS HIMEM.SYS {and any HIMEM options}
  1329.                 DEVICE=HIGHDRVR.SYS HIGHUMM.SYS
  1330.  
  1331.         This  causes  HIGHUMM.SYS  to  add  the  UMB functions to the XMS
  1332.         driver  implemented  by  HIMEM.SYS.  If you don't need HIMEM.SYS,
  1333.         you  can  use  HIGHUMM.SYS as a UMB-Only version of an XMS device
  1334.         driver, as in: 
  1335.  
  1336.                 DEVICE=LASTBYTE.SYS {and any LASTBYTE options}
  1337.                 DEVICE=HIGHDRVR.SYS HIGHUMM.SYS
  1338.  
  1339.         Next  you  must  add  a  "SHELL="  line  to  CONFIG.SYS for 4DOS,
  1340.         including  the options "/U" (to place the command processor in an
  1341.         UMB)  and  "/E:512U" (to place the master environment in an UMB).
  1342.         The  value "512" is of course only an example - other environment
  1343.         sizes  may  be  specified.   You  may  also want to specify these
  1344.         options   for   secondary   shells  in  the  4DSHELL  environment
  1345.         variable.  Consult the 4DOS documentation for further details.  
  1346.  
  1347.         4DOS  may  be  downloaded from The Future Technology BBS at (617)
  1348.         720-3600, or obtained directly from: 
  1349.  
  1350.                 J.P. Software             CompuServe: 75300,210 
  1351.                 P.O. Box 1470             BIX: "trawson" 
  1352.                 E. Arlington, MA 02174    Internet, Bitnet, etc: 
  1353.                 Voice: (617) 646-3975       75300.210@compuserve.com 
  1354.                 Fax: (617) 646-0904 
  1355.  
  1356.  
  1357.         _1_9_.__U_s_i_n_g__L_A_S_T_B_Y_T_E__w_i_t_h__H_y_p_e_r_W_a_r_e_'_s__H_y_p_e_r_D_i_s_k__C_a_c_h_e__P_r_o_g_r_a_m__ 
  1358.  
  1359.         HyperDisk  is  a  shareware disk caching utility.  It's too large
  1360.         to  load  high  with  HIGHDRVR  or  HIGHTSR  under  the 32K limit
  1361.         imposed   by  the  unlicensed  evaluation  version  of  LASTBYTE.
  1362.         However,   you   can   work   around  this  limitation  by  using
  1363.         HyperDisk's  "XS"  option  to  load  itself  into  the  48k block
  1364.         starting  at  E400.   Just  be sure to exclude this area by using
  1365.         the following option on the LASTBYTE.SYS command line: 
  1366.  
  1367.                 DEVICE=LASTBYTE.SYS EXC=E400:48 
  1368.  
  1369.         If  you  have  a  licensed  version  of  LASTBYTE,  then a better
  1370.         approach  is  to  use either HIGHDRVR or HIGHTSR (as appropriate)
  1371.         to  load  HyperDisk high (without HyperDisk's "XS" option).  This
  1372.         method  guarantees that the minimum amount of high memory will be
  1373.         used.  
  1374.  
  1375.         HyperDisk  can  be  downloaded  from  HyperWare's  BBS  at  (408)
  1376.         683-4988, or obtained directly from: 
  1377.  
  1378.  
  1379.  
  1380.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  1381.  
  1382.  
  1383.         Dec 11, 1990           The LAST BYTE (tm)                      23
  1384.  
  1385.  
  1386.  
  1387.                 HyperWare 
  1388.                 14460 Sycamore Ave.  
  1389.                 San Martin, CA 95046 
  1390.                 Voice: (408) 683-4911 
  1391.                 FAX: (408) 683-4042 
  1392.  
  1393.  
  1394.         _2_0_.__H_I_G_H_B_F_R_S_:__L_o_a_d_i_n_g__D_O_S__B_u_f_f_e_r_s__i_n_t_o__H_i_g_h__M_e_m_o_r_y__ 
  1395.  
  1396.         NOTE:  HIGHBFRS  *ONLY*  works  for DOS 3.xx.  It does *NOT* work
  1397.         for DOS 4.  
  1398.  
  1399.                 ╔═════════════════════════════════════════════════╗
  1400.                 ║ WARNING!  PLACING DOS BUFFERS IN HIGH MEMORY    ║
  1401.                 ║ CAN RESULT IN THE LOSS OF DATA.  I.E., IT CAN   ║
  1402.                 ║ DAMAGE THE DIRECTORY AND FILE ALLOCATION TABLES ║
  1403.                 ║ OF YOUR DISK.  READ EVERYTHING IN THIS SECTION  ║
  1404.                 ║ BEFORE CONSIDERING THE USE OF THIS UTILITY.     ║
  1405.                 ╚═════════════════════════════════════════════════╝
  1406.  
  1407.         Some  16-bit  adapter  cards  do  not properly decode the address
  1408.         lines  within  the narrow time constraints imposed by the Address
  1409.         Latch  Enable  (ALE)  signal.   As  a  result,  such  cards  will
  1410.         occassionally  respond  to  a  memory  access that is directed at
  1411.         some  other  portion  of  the address space.  Thinking that it is
  1412.         for  them,  they  force the transfer into 16-bit mode even though
  1413.         the  intended  recipient  requires  8-bit  mode,  and  thus cause
  1414.         erroneous   data   to   be   transferred  to  the  bytes  in  the
  1415.         odd-numbered  addresses.   The most common and damaging occurence
  1416.         occurs  during  the  8-bit  DMA  transfers  between a floppy disk
  1417.         drive  and  high  memory  near  the  address space occupied by an
  1418.         offending  16-bit  adapter  card.   Due  to  organization  of the
  1419.         address  signals  on  the AT bus, this phenomena only occurs when
  1420.         the  two  address  areas  are within the same 128k region.  There
  1421.         are  three  such  regions  in  the high memory area: A0000-BFFFF,
  1422.         C0000-DFFFF, and E0000-FFFFF.  
  1423.  
  1424.         Evidence  of  this  hardware  problem has been exhibited by other
  1425.         memory  managers  that  also offer software to locate DOS buffers
  1426.         in high memory.  The problem is NOT unique to LASTBYTE.  
  1427.  
  1428.         HIGHBFRS  offers  two  solutions to this problem.  The first (and
  1429.         preferred  solution)  is to restrict the placement of DOS buffers
  1430.         to  particular  128k regions in high memory.  For example, if you
  1431.         have  an  offending  16-bit VGA card, you would want to place the
  1432.         DOS  buffers  in  only the last 128k region since the VGA display
  1433.         buffer  occupies  A0000-AFFFF and B8000-BFFFF and because the VGA
  1434.         Bios  Rom  occupies  C0000-C7FFF.  The corresponding command line
  1435.         options (explained in more detail later) would be: 
  1436.  
  1437.  
  1438.  
  1439.  
  1440.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  1441.  
  1442.  
  1443.         Dec 11, 1990           The LAST BYTE (tm)                      24
  1444.  
  1445.  
  1446.                    HIGHBFRS A000-BFFF=0 C000-DFFF=0 BUFFERS=20
  1447.  
  1448.         If  you  have  16-bit  adapter  cards in all three 128k segments,
  1449.         then  a  second  (different)  solution  may be both necessary and
  1450.         sufficient.   It  intercepts transfers between floppy disk drives
  1451.         (an  8-bit  DMA  interface)  and  high  memory, and redirects the
  1452.         transfer  through  an  intermediate sector buffer in conventional
  1453.         (low)  memory.   Almost  all hard disk controllers use 16-bit CPU
  1454.         instructions   to  transfer  data  and  thus  do  not  incur  the
  1455.         problem.  The corresponding command line options would be: 
  1456.  
  1457.                           HIGHBFRS FLOPPY=1 BUFFERS=20
  1458.  
  1459.         To  use  HIGHBFRS,  you  MUST  set "BUFFERS=1" in your CONFIG.SYS
  1460.         file.   This  one buffer in Conventional (low) memory is required
  1461.         by  the  FLOPPY  option  as the intermediate buffer for transfers
  1462.         between floppy disk drives and high memory.  
  1463.  
  1464.         HIGHBFRS   defaults   to   maximum   buffers   and  automatically
  1465.         determines  the  safest  location  for  loading buffers into high
  1466.         memory  by sensing the presence 16-bit adapter cards.  If none of
  1467.         the  three  128k  segments  is  considered "safe", it will enable
  1468.         interception  of  floppy transfers.  Any of these defaults can be
  1469.         overridden by one or more of the following command line options: 
  1470.  
  1471.              BUFFERS=<number> (Abbreviated "B=<number>") 
  1472.  
  1473.                   Changes  the  number  of  DOS buffers to the value
  1474.                   specified.  (Note:  "<number>"  is  a  number from
  1475.                   1-99.) 
  1476.  
  1477.              BUFFERS=MAXIMUM (Abbreviated "B=M") 
  1478.  
  1479.                   Changes  the  number of DOS buffers to the maximum
  1480.                   permitted  by the amount of available unrestricted
  1481.                   memory, but no more than the DOS limit of 99.  
  1482.  
  1483.              SENSE (Abbreviated "S") 
  1484.  
  1485.                   Resets   the   buffer  placement  restrictions  by
  1486.                   sensing  the presense of 16-bit adapter cards.  If
  1487.                   all    three   segments   are   thus   restricted,
  1488.                   interception of floppy transfers is enabled.  
  1489.  
  1490.              FLOPPY=<switch> (Abbreviated "F=<switch>") 
  1491.  
  1492.                   Enables  (1)  or  disables (0) redirection of Bios
  1493.                   INT  13h  calls  that  attempt  to  transfer  data
  1494.                   between  a  floppy disk drive and high memory.  If
  1495.                   redirected,   such   transfers   go   through   an
  1496.                   intermediate  buffer located in Conventional (low)
  1497.  
  1498.  
  1499.  
  1500.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  1501.  
  1502.  
  1503.         Dec 11, 1990           The LAST BYTE (tm)                      25
  1504.  
  1505.  
  1506.                   memory.  (Note: "<switch>" is either 0 or 1.) 
  1507.  
  1508.              A000-BFFF=<switch> (Abbreviated "A=<switch>") 
  1509.              C000-DFFF=<switch> (Abbreviated "C=<switch>") 
  1510.              E000-FFFF=<switch> (Abbreviated "E=<switch>") 
  1511.  
  1512.                   where  "<switch>"  is  0  or  1.   Enables  (1) or
  1513.                   disables  (0)  the placement of DOS buffers in the
  1514.                   corresponding  128k  region  of  the  high  memory
  1515.                   address space.  
  1516.  
  1517.         All  of these are optional, may be combined at random, and may be
  1518.         abbreviated  by  their  first letter (e.g., A=<switch> instead of
  1519.         A000-BFFF=<switch>).   The  first  time you run HIGHBFRS, all the
  1520.         options   default   to   1  unless  overridden  by  command  line
  1521.         arguments.   Each  successive  time HIGHBFRS is run, the defaults
  1522.         are whatever the last setting of each option happens to be.  
  1523.  
  1524.         When  HIGHBFRS  is  invoked  with  no  command line arguments, it
  1525.         simply  reports  the  number  of DOS buffers presently located in
  1526.         High  Memory  and  whether  or  not transfers between floppy disk
  1527.         drives  and  high memory are redirected.  You may use the HIGHMEM
  1528.         program  to  determine where the buffers have been placed in high
  1529.         memory.  
  1530.  
  1531.         MicroSoft  recommends setting the "BUFFERS=" option in CONFIG.SYS
  1532.         according  to  the  type  of  application  most  frequently used.
  1533.         Implicit  within  this  recommendation is the assumption that you
  1534.         won't  change  the  value  very  often  since it requires editing
  1535.         CONFIG.SYS and rebooting.  
  1536.  
  1537.         However,  since  HIGHBFRS  allows you to increase or decrease the
  1538.         number  of buffers dynamically, you could create some batch files
  1539.         to invoke your applications with the optimum number.  
  1540.  
  1541.         In  general, more buffers help when running programs that perform
  1542.         random  access on a relatively small number of disk records (such
  1543.         as  the  index  for a database program), or if your disk has many
  1544.         subdirectories organized on several levels.  
  1545.  
  1546.  
  1547.  
  1548.  
  1549.  
  1550.  
  1551.  
  1552.  
  1553.  
  1554.  
  1555.  
  1556.  
  1557.  
  1558.  
  1559.  
  1560.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  1561.  
  1562.  
  1563.                                The LAST BYTE (tm)
  1564.  
  1565.  
  1566.                                 Table of Contents
  1567.  
  1568.  
  1569.         1. Introduction        ....................................    1
  1570.  
  1571.         2. Installation        ....................................    3
  1572.  
  1573.         3. Command Line Options For LASTBYTE.SYS    ...............    6
  1574.  
  1575.         4. HIGHMARK and HIGHUNDO: Unloading TSRs from Memory  .....    9
  1576.  
  1577.         5. HIGHINST: Loading SHARE.EXE into High Memory   .........   10
  1578.  
  1579.         6. The /SIZE option of HIGHDRVR HIGHTSR and HIGHINST ......   10
  1580.  
  1581.         7. The /NOENV option of HIGHTSR and HIGHINST  .............   11
  1582.  
  1583.         8. Installing FASTOPEN and MODE into High Memory  .........   12
  1584.  
  1585.         9. HIGHDISK: A Ram Disk in Bank-Switch Memory  ............   13
  1586.  
  1587.         10. Windows 3.0 Compatibility      ........................   14
  1588.            10.1  Modifying the Windows SYSTEM.INI File    .........   14
  1589.            10.2  HIGHMEM and Windows 386 Enhanced Mode   ..........   14
  1590.            10.3  HIGHDISK and Windows 386 Enhanced Mode   .........   15
  1591.  
  1592.         11. Using the DOS=F000:32 Option     ......................   15
  1593.  
  1594.         12. Video Display RAM above 640k    .......................   15
  1595.  
  1596.         13. Video Adapter Bios ROMs     ...........................   17
  1597.  
  1598.         14. HIGHAPND: Stretching Conventional Memory beyond 640k      17
  1599.  
  1600.         15. Using The Last Byte with Expanded Memory  .............   19
  1601.  
  1602.         16. HIGHEMS: Emulating Expanded Memory w/Bank-Switch Memory   20
  1603.  
  1604.         17. Fine-Tuning your Adapter Hardware Configuration    ....   21
  1605.  
  1606.         18. Using HIGHUMM.SYS with 4DOS     .......................   21
  1607.  
  1608.         19. Using LASTBYTE with HyperWare's HyperDisk Cache Program   22
  1609.  
  1610.         20. HIGHBFRS: Loading DOS Buffers into High Memory  .......   23
  1611.  
  1612.  
  1613.  
  1614.  
  1615.  
  1616.  
  1617.  
  1618.  
  1619.  
  1620.          Copyright (C) 1990, Key Software Products.  All Rights Reserved
  1621.  
  1622.